package mobi.zeedev.flyingsaucer.common.WebLinkModule.interfaces;

import android.content.ContentValues;
import com.google.inject.ImplementedBy;
import mobi.zeedev.flyingsaucer.common.CredentialsModule.impl.HomeInfo;
import mobi.zeedev.flyingsaucer.common.DataModule.tree.DatabaseTree;
import mobi.zeedev.flyingsaucer.common.RegexModule.impl.ParseException;
import mobi.zeedev.flyingsaucer.common.WebLinkModule.BadCredentialsException;
import mobi.zeedev.flyingsaucer.common.WebLinkModule.UfoClientException;
import mobi.zeedev.flyingsaucer.common.WebLinkModule.impl.UfoClubClientImpl;
import mobi.zeedev.flyingsaucer.common.WebQueryModule.impl.HttpException;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * User: James
 * Date: 1/8/11
 * Time: 4:07 PM
 */
@ImplementedBy(UfoClubClientImpl.class)
public interface UfoClubClient {

    void login() throws IOException, HttpException, ParseException, UfoClientException;

    Boolean isLoggedIn();

    void logout();

    HomeInfo getHomeInfoCache();




    List<ContentValues> getTastedPage() throws HttpException, IOException, IllegalArgumentException, SecurityException, IllegalAccessException, NoSuchFieldException, ParseException;

    List<ContentValues> getUntastedPage() throws HttpException, IOException, IllegalArgumentException, SecurityException, IllegalAccessException, NoSuchFieldException, ParseException;

    Integer getMemberId() throws HttpException, IOException, ParseException, BadCredentialsException;

    HomeInfo getLoginMain() throws HttpException, IOException, ParseException, BadCredentialsException;

    List<Map<String, Object>> getStoresBeersByCategory(String url) throws HttpException, IOException, ParseException;

    Map<String,String> getStoresURLs() throws IOException, HttpException, ParseException;

    DatabaseTree getStoresTree() throws IOException, HttpException, ParseException;

    Map<String,Object> getStoresBeersByName(String addison) throws IOException, HttpException, ParseException;

    void attemptLogin() throws IOException, HttpException, ParseException, BadCredentialsException;


}
